$(function(){
    $('.multi-inputs').each(function(){
        var container_id = this.id;
        $(this).children(".item").each(function(){
            // add
            var add = $('<a class="btn add">+</a>');
            add.data("container_id", container_id);
            add.click(function(){
                var item = $(this).parent();
                var nItem = item.clone(true);
                item.after(nItem);
                RebuildIndexes(item.parent());
                
                var container_func_name = $(this).data("container_id") + "_onAdd";
                if(eval('typeof('+container_func_name+')') == "function") {
                    eval(container_func_name+'(nItem)');
                }
            });
            $(this).append(add);
            
            // remove
            var remove = $('<a class="btn delete">-</a>');
            remove.data("container_id", container_id);
            remove.click(function(){
                var item = $(this).parent();
                var container = $(this).parent().parent();
                var container_func_name = $(this).data("container_id") + "_onDelete";
                $(this).parent().remove();
                RebuildIndexes(container);
                
                if(eval('typeof('+container_func_name+')') == "function") {
                    eval(container_func_name+'(item)');
                }
            });
            $(this).append(remove);
        });
    });
});

function RebuildIndexes(container) {
	container.find(".item").each(function(index){
		$(this).find("input[name],select,textarea").each(function(){
			$(this).attr("name", $(this).attr("name").replace(/\[\d+\]/, '[' + index + ']'));
		});
	})
}